package com.lx.patterns.memento.black;

import com.lx.patterns.memento.white.RoleStateMemento;

/**
 * @ClassName GameRole
 * @Description: 游戏角色-发起人角色
 * @Author: 落雪
 * @CreateDate: 2025/2/15 15:19
 * @UpdateUser: 落雪
 * @UpdateDate: 2025/2/15 15:19
 * @UpdateRemark:
 * @Version: 1.0
 */
public class GameRole {

    private int vit; //生命力
    private int atk; //攻击力
    private int def; //防御力

    //初始状态
    public void initState(){
        this.vit = 100;
        this.atk = 100;
        this.def = 100;
    }
    //战斗
    public void fight(){
        this.vit = 0;
        this.atk = 0;
        this.def = 0;
    }
    //生成备忘录
    public Memento saveState(){
        return new RoleStateMemento(vit,atk,def);
    }
    //恢复状态
    public void recoverState(Memento memento){
        RoleStateMemento roleStateMemento = (RoleStateMemento) memento;
        this.vit = roleStateMemento.getVit();
        this.atk = roleStateMemento.getAtk();
        this.def = roleStateMemento.getDef();
    }

    public void showState(){
        System.out.println("角色生命力："+vit+"，攻击力："+atk+"，防御力："+def);
    }

    public class RoleStateMemento implements Memento{
        private int vit;
        private int atk;
        private int def;

        public RoleStateMemento() {
        }

        public RoleStateMemento(int vit, int atk, int def) {
            this.vit = vit;
            this.atk = atk;
            this.def = def;
        }

        public int getVit() {
            return vit;
        }

        public void setVit(int vit) {
            this.vit = vit;
        }

        public int getAtk() {
            return atk;
        }

        public void setAtk(int atk) {
            this.atk = atk;
        }

        public int getDef() {
            return def;
        }

        public void setDef(int def) {
            this.def = def;
        }
    }


}
